python np.array()函数原理详细分析 您所在的位置:网站首页 python 36 37区别 python np.array()函数原理详细分析

python np.array()函数原理详细分析

2023-11-10 21:35| 来源: 网络整理| 查看: 265

一、数组和列表

列表不存在维度问题,数组是有维度的

np.array()把列表转化为数组

问题:数组和列表的转化问题

官方解释: 在这里插入图片描述

二、代码实例分析 (1)列表嵌套一维数组,然后np.array(列表)

1.定义一个空列表sub_f 2.定义两个数组index_x、index_y

sub_f = [] index_x=np.array([i for i in range(16)]).reshape(1,16) index_y=np.array([i for i in range(16,32)]).reshape(1,16) print(index_x) print(index_y)

问题1:index_x、index_y是几维的?可见都是1×16的二维数组,因为两个中括号。

[[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]] [[16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]]

问题2:index_x[0]是数组还是列表?可见依然是数组,没有逗号,一维数组(对比如下列表b可知)

b=[0,1,2,3,4,5,6,7,8] print(b) print(index_x[0]) [0, 1, 2, 3, 4, 5, 6, 7, 8] [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]

3.给sub_f空列表添加一维数组index_x[0]、index_y[0]

sub_f.append(index_x[0]) sub_f.append(index_y[0]) print(sub_f)

结果:此时的sub_f是一个嵌套了两个一维数组的列表

[array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), array([16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])] [0, 1, 2, 3, 4, 5, 6, 7, 8]

4.将sub_f转为数组

l = np.array(sub_f) print(l)

结果:此时的l是2×16的二维数组

[[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] [16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]] (2)列表嵌套二维数组

5.继续定义一个空列表L,给L空列表添加l,添加两次l

L=[] L.append(l) L.append(l) print(L)

问题3:此时的L是什么样的?是一个嵌套了两个2×16二维数组的列表

[array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]]), array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]])]

6.将L转为数组

ll=np.array(L) print(ll)

问题4:此时的ll是什么样的?有几个中括号?是一个2×2×16的三维数组,由三个中括号

[[[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] [16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]] [[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] [16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]]] (3)那么问题来了,如果直接嵌套两次sub_f列表和(2)中嵌套两次l数组np.array之后的结果是一样的吗?

我们先再来看看sub_f和l分别是什么样的 由前面可以知道sub_f和l

print(sub_f) print(l)

sub_f嵌套了两个一维数组的列表,l是2×16的二维数组

[array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), array([16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])] [[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] [16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]]

7.继续定义一个空列表LLL,给LLL空列表添加sub_f,添加两次

LLL=[] LLL.append(sub_f) LLL.append(sub_f) print(LLL)

问题5:此时的LLL是什么样的?是一个嵌套了四个一维数组的列表

[[array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), array([16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])], [array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), array([16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])]]

8.将LLL转为数组

aaa=np.array(LLL) print(aaa) [[[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] [16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]] [[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] [16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31]]]

可见与(2)中的ll一样。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有